/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.going.vista;

import co.com.going.logica.ICiudadLogica;
import co.com.going.logica.IPaisLogica;
import co.com.going.modelo.Ciudad;
import co.com.going.modelo.Pais;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.component.selectonemenu.SelectOneMenu;
import org.primefaces.event.SelectEvent;

/**
 *
 * @author Olguita
 */
@ManagedBean (name="VistaCiudad")
@RequestScoped
public class VistaCiudad {

    
    @EJB
    private ICiudadLogica iCiudadLogica;
    @EJB
    private IPaisLogica iPaisLogica;
    
    
    private InputText txtCodCiudad;
    private InputText txtNombreCiudad;
    private ArrayList<SelectItem> Paises;
    private SelectOneMenu cmbPais;
    private CommandButton btnRegistrar;
    private CommandButton btnModificar;
    private CommandButton btnEliminar;
    private CommandButton btnLimpiar;
    private List<Ciudad> listaCiudades;
    private Ciudad ciudadSeleccionada;
    
    
    public VistaCiudad() {
    }

    public ICiudadLogica getiCiudadLogica() {
        return iCiudadLogica;
    }

    public void setiCiudadLogica(ICiudadLogica iCiudadLogica) {
        this.iCiudadLogica = iCiudadLogica;
    }

    public IPaisLogica getiPaisLogica() {
        return iPaisLogica;
    }

    public void setiPaisLogica(IPaisLogica iPaisLogica) {
        this.iPaisLogica = iPaisLogica;
    }

    public InputText getTxtCodCiudad() {
        return txtCodCiudad;
    }

    public void setTxtCodCiudad(InputText txtCodCiudad) {
        this.txtCodCiudad = txtCodCiudad;
    }

    public InputText getTxtNombreCiudad() {
        return txtNombreCiudad;
    }

    public void setTxtNombreCiudad(InputText txtNombreCiudad) {
        this.txtNombreCiudad = txtNombreCiudad;
    }

    public ArrayList<SelectItem> getPaises() {
        
        if(Paises==null){
            
            try {
                Paises = new ArrayList<>();
                List<Pais> lista=iPaisLogica.paises();
                
                for (int i = 0; i <lista.size(); i++) {
                    
                    Paises.add(new SelectItem(lista.get(i).getCodPais(), lista.get(i).getNombrePais()));
                    
                }
                
            } catch (Exception ex) {
                Logger.getLogger(VistaCiudad.class.getName()).log(Level.SEVERE, null, ex);
            }
            
        }
        
        
        return Paises;
    }

    public void setPaises(ArrayList<SelectItem> Paises) {
        this.Paises = Paises;
    }

    public SelectOneMenu getCmbPais() {
        return cmbPais;
    }

    public void setCmbPais(SelectOneMenu cmbPais) {
        this.cmbPais = cmbPais;
    }

    public CommandButton getBtnRegistrar() {
        return btnRegistrar;
    }

    public void setBtnRegistrar(CommandButton btnRegistrar) {
        this.btnRegistrar = btnRegistrar;
    }

    public CommandButton getBtnModificar() {
        return btnModificar;
    }

    public void setBtnModificar(CommandButton btnModificar) {
        this.btnModificar = btnModificar;
    }

    public CommandButton getBtnEliminar() {
        return btnEliminar;
    }

    public void setBtnEliminar(CommandButton btnEliminar) {
        this.btnEliminar = btnEliminar;
    }

    public CommandButton getBtnLimpiar() {
        return btnLimpiar;
    }

    public void setBtnLimpiar(CommandButton btnLimpiar) {
        this.btnLimpiar = btnLimpiar;
    }

    public List<Ciudad> getListaCiudades() {
        
        try {
            listaCiudades = iCiudadLogica.ciudades();
           
        } catch (Exception ex) {
            Logger.getLogger(VistaCiudad.class.getName()).log(Level.SEVERE, null, ex);
        }
        
         return listaCiudades;
    }

    public void setListaCiudades(List<Ciudad> listaCiudades) {
        this.listaCiudades = listaCiudades;
    }

    public Ciudad getCiudadSeleccionada() {
        return ciudadSeleccionada;
    }

    public void setCiudadSeleccionada(Ciudad ciudadSeleccionada) {
        this.ciudadSeleccionada = ciudadSeleccionada;
    }
    
    
    public void seleccionar_Ciudad(SelectEvent event){
        
        Ciudad ciudad= (Ciudad) event.getObject();
        
        txtCodCiudad.setValue(ciudad.getCodCiudad());
        txtNombreCiudad.setValue(ciudad.getNombreCiudad());
        cmbPais.setValue(ciudad.getCodPaisCiudad().getCodPais());
        txtCodCiudad.setDisabled(true);
        btnEliminar.setDisabled(false);
        btnModificar.setDisabled(false);
        btnRegistrar.setDisabled(true);
        
        
    }
    
    public void funcion_Registar(){
        
        try {
            Ciudad ciudad=new Ciudad();
            
            ciudad.setCodCiudad(Long.parseLong(txtCodCiudad.getValue().toString().trim()));
            ciudad.setNombreCiudad(txtNombreCiudad.getValue().toString().trim().toUpperCase());
            Pais pais=iPaisLogica.buscarPaisPorId(Long.parseLong(cmbPais.getValue().toString()));
            ciudad.setCodPaisCiudad(pais);
            iCiudadLogica.crearCiudad(ciudad);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage("La Ciudad Fue Creada con Exito"));
            funcion_Limpiar();
            
        } catch (Exception ex) {
            Logger.getLogger(VistaCiudad.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(ex.getMessage()));
        }
        
        
    }
    
    public void funcion_Modificar(){
        
        try {
            Ciudad ciudad=new Ciudad();
            
            ciudad.setCodCiudad(Long.parseLong(txtCodCiudad.getValue().toString().trim()));
            ciudad.setNombreCiudad(txtNombreCiudad.getValue().toString().trim().toUpperCase());
            Pais pais=iPaisLogica.buscarPaisPorId(Long.parseLong(cmbPais.getValue().toString()));
            ciudad.setCodPaisCiudad(pais);
            iCiudadLogica.crearCiudad(ciudad);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage("La Ciudad Fue Modificada con Exito"));
            funcion_Limpiar();
            
        } catch (Exception ex) {
            Logger.getLogger(VistaCiudad.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(ex.getMessage()));
        }
        
    }
    
    public void funcion_Eliminar(){
        
        
    }
    
    public void funcion_Limpiar(){
        
        txtCodCiudad.setValue("");
        txtNombreCiudad.setValue("");
        txtCodCiudad.setDisabled(true);
        btnEliminar.setDisabled(false);
        btnRegistrar.setDisabled(true);
        btnModificar.setDisabled(false);
        btnLimpiar.setDisabled(true);
        cmbPais.setValue("");
        
        
    }
    
    
    
}
